#include<bits/stdc++.h>
using namespace std;
const int len=1e5+10;
int n,r[len],t[len],num[len],ans,sum;
bool vis[len];
void dfs(int x){
//	cout<<x<<endl;
//	for(int i=1;i<=n;i++){
//		cout<<vis[i]<<' ';
//	}
//	cout<<endl;
	if(x>n){
//		cout<<"1o"<<endl;
		ans=max(ans,sum);
		return ;
	}
//	cout<<"sur1"<<endl;
	if(vis[x]==1)
		dfs(x+1);
//	cout<<"sur2"<<endl;
	for(int i=1;i<=n;i++){
		if(vis[i]==0 && r[x]>r[i]){
			vis[i]=1;
			sum++;
			dfs(x+1);
			vis[i]=0;
			sum-=1;
		} 
	}
	dfs(x+1);
}
int main(){
	freopen("duel.in","r",stdin);
	freopen("duel.out","w",stdout);
	scanf("%d",&n);
	int tagg=1;
	for(int i=1;i<=n;i++){
		scanf("%d",&r[i]);
		if(r[i]>2)
			tagg=0;
	}
	if(tagg==1){
		sum=0;
		for(int i=1;i<=n;i++){
			if(r[i]==1)
				sum++;
		}
		ans=min(sum,n-sum);
		ans=n-ans;
		printf("%d\n",ans);
		return 0;
	}
	if(n<=10){
		ans=0;
		sum=0;
		dfs(1);
		ans=n-ans;
		printf("%d\n",ans);
	}
	else{
		for(int i=1;i<=n;i++){
			t[r[i]]++;
		}
		for(int i=1;i<=n;i++){
			num[i]=num[i-1]+t[r[i]];
		}
		for(int i=1;i<=n;i++){
			if(num[i]>(n-num[i])){
				ans=num[i-1]+(n-num[i-1])-t[r[i]];
				break;
			}
		}
		ans=n-ans;
		printf("%d\n",ans);
	}
	return 0;
}
